Change blkif, netif destroy to send disconnect first.
def destroy(self):
print 'BlkifController>destroy> dom=', self.dom
- self.destroyDevices()
- self.send_be_destroy()
+ def cb_destroy(val):
+ self.send_be_destroy()
+ d = self.factory.addDeferred()
+ d.addCallback(cb_destroy)
+ self.send_be_disconnect()
+ #self.destroyDevices()
def destroyDevices(self):
for dev in self.getDevices():
'blkif_handle' : 0 })
self.factory.writeRequest(msg)
+ def send_be_disconnect(self):
+ print '>BlkifController>send_be_disconnect>', 'dom=', self.dom
+ msg = packMsg('blkif_be_disconnect_t',
+ { 'domid' : self.dom,
+ 'blkif_handle' : 0 })
+ self.factory.writeRequest(msg)
+
def send_be_destroy(self):
print '>BlkifController>send_be_destroy>', 'dom=', self.dom
msg = packMsg('blkif_be_destroy_t',
'blkif_be_create_t':
(CMSG_BLKIF_BE, CMSG_BLKIF_BE_CREATE),
+ 'blkif_be_disconnect_t':
+ (CMSG_BLKIF_BE, CMSG_BLKIF_BE_DISCONNECT),
+
'blkif_be_destroy_t':
(CMSG_BLKIF_BE, CMSG_BLKIF_BE_DESTROY),
'netif_be_create_t':
(CMSG_NETIF_BE, CMSG_NETIF_BE_CREATE),
- 'netif_be_destroy_t':
- (CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY),
-
'netif_be_disconnect_t':
(CMSG_NETIF_BE, CMSG_NETIF_BE_DISCONNECT),
+ 'netif_be_destroy_t':
+ (CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY),
+
'netif_be_driver_status_changed_t':
(CMSG_NETIF_BE, CMSG_NETIF_BE_DRIVER_STATUS_CHANGED),
self.bridge = None
def destroy(self):
+ def cb_destroy(val):
+ self.controller.send_be_destroy(self.vif)
print 'NetDev>destroy>', 'vif=', self.vif
PrettyPrint.prettyprint(self.sxpr())
self.bridge_rem()
- self.controller.send_be_destroy(self.vif)
+ d = self.controller.factory.addDeferred()
+ d.addCallback(cb_destroy)
+ self.controller.send_be_disconnect(self.vif)
+ #self.controller.send_be_destroy(self.vif)
class NetifController(controller.Controller):
'mac' : dev.mac })
self.factory.writeRequest(msg)
+ def send_be_disconnect(self, vif):
+ dev = self.devices[vif]
+ msg = packMsg('netif_be_disconnect_t',
+ { 'domid' : self.dom,
+ 'netif_handle' : dev.vif })
+ self.factory.writeRequest(msg)
+
def send_be_destroy(self, vif):
print 'NetifController>send_be_destroy>', 'dom=', self.dom, 'vif=', vif
PrettyPrint.prettyprint(self.sxpr())